﻿using BLL;
using HRP.Utilidades;
using Model;
using Model.Auxiliar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace HRP.Private.Funcionarios
{
    public partial class Ficha : System.Web.UI.Page
    {
        public string NomeFuncionario { get; set; }
        public string FotoFuncionario { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack && Session["EmpresaActual"] != null && Session["idclient"] != null)
            {
                hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                Session["VistaEmpresaId"] = ((hrp_empresas)Session["EmpresaActual"]).id;
                CarregarListaFuncionarios(empresa);
                CarregarFuncionario();
            }
            dadosFuncPanel.Visible = true;
            errorPanel.Visible = !dadosFuncPanel.Visible;

            Page.PreRender += Page_PreRender;
        }

        void Page_PreRender(object sender, EventArgs e)
        {
            if (Session["EmpresaActual"] != null && Session["VistaEmpresaId"] != null && Session["idclient"] != null)
            {
                hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                if (empresa.id != (int)Session["VistaEmpresaId"])//verifica se a empresa foi mudada
                {
                    Session["VistaEmpresaId"] = ((hrp_empresas)Session["EmpresaActual"]).id;
                    CarregarListaFuncionarios(empresa);
                }
                if (funcionariosList.SelectedItem != null)
                {
                    int id_func = 0;
                    Int32.TryParse(funcionariosList.SelectedItem.Value, out id_func);
                    var funcionarioActual = Funcionario_BLL.Instance.ObterFuncionario((int)Session["idclient"], empresa.id, id_func);
                    if (funcionarioActual != null)
                    {

                        NomeFuncionario = funcionarioActual.Dados.nome;
                        FichaDadosUC.FuncionarioActual = funcionarioActual;
                        FichaContratoUC.FuncionarioActual = funcionarioActual;
                        FichaAgenda.FuncionarioActual = funcionarioActual;
                        FichaPerfil.FuncionarioActual = funcionarioActual;
                        Adiantamentos.FuncionarioActual = funcionarioActual;
                        VerDocumentosUC.FuncionarioActual = funcionarioActual;
                        
                    }
                    else
                    {
                        NomeFuncionario = "Funcionário";
                        FotoFuncionario = utilidades.fotoFuncionarioDefault;
                        FichaDadosUC.FuncionarioActual = null;
                        FichaContratoUC.FuncionarioActual = null;
                        FichaAgenda.FuncionarioActual = null;
                        FichaPerfil.FuncionarioActual = null;
                        Adiantamentos.FuncionarioActual = null;
                        VerDocumentosUC.FuncionarioActual = null;
                        dadosFuncPanel.Visible = false;
                        errorPanel.Visible = !dadosFuncPanel.Visible;
                    }
                }
                else
                {
                    NomeFuncionario = "Funcionário";
                    FotoFuncionario = utilidades.fotoFuncionarioDefault;
                    FichaDadosUC.FuncionarioActual = null;
                    FichaContratoUC.FuncionarioActual = null;
                    FichaAgenda.FuncionarioActual = null;
                    FichaPerfil.FuncionarioActual = null;
                    Adiantamentos.FuncionarioActual = null;
                    VerDocumentosUC.FuncionarioActual = null;
                    dadosFuncPanel.Visible = false;
                    errorPanel.Visible = !dadosFuncPanel.Visible;
                }
            }
        }

        void CarregarFuncionario()
        {
            hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
            int id_func = 0;
            Int32.TryParse(Request.QueryString["id"], out id_func);
            var funcionarioActual = Funcionario_BLL.Instance.ObterFuncionario((int)Session["idclient"], empresa.id, id_func);
            //NomeFuncionario = funcionarioActual.Dados.nome;
            //FotoFuncionario = !string.IsNullOrEmpty(funcionarioActual.Dados.foto) ? funcionarioActual.Dados.foto : utilidades.fotoFuncionarioDefault;
            //EditarDadosUC.FuncionarioActual = funcionarioActual;
            //EditarContratoUC.FuncionarioActual = funcionarioActual;
            //FichaAgendaUC.FuncionarioActual = funcionarioActual;
            Session["FuncionarioId"] = id_func;
        }

        void CarregarListaFuncionarios(hrp_empresas empresa)
        {
            var ListaFuncionarios = Funcionario_BLL.Instance.ObterListaFuncionario((int)Session["idclient"], empresa.id, 0, 0, true);
            funcionariosList.DataSource = ListaFuncionarios.OrderBy(f=>f.nome).ToList();
            funcionariosList.DataBind();
            if (Request.QueryString["id"] != null)
            {
                int funcId = 0;
                Int32.TryParse(Request.QueryString["id"], out funcId);
                if (ListaFuncionarios.Any(f => f.id == funcId))
                {
                    funcionariosList.SelectedIndex = funcionariosList.Items.IndexOf(funcionariosList.Items.FindByValue(funcId.ToString()));
                }
            }
        }
    }
}